Versi 1
| Field | Isi |
|---|---|
| Dokumen ID | VBS-LAP-019 |
| Deskripsi | Laporan keuntungan penjualan: membandingkan total penjualan dengan harga pokok untuk mengetahui keuntungan per barang, per invoice, atau per periode |
| Nomor Revisi | 1 |
| Tanggal | 2026-10-04 |
| Keterangan | Dokumentasi baseline dari dokumentasi fitur demo dan kode FE |
1. Ringkasan
a. In scope
- User membuka laporan Keuntungan Penjualan dari daftar Laporan Penjualan.
- User memilih mode keuntungan: per barang, per invoice, atau per periode.
- User mengisi periode tanggal (mode per barang dan per invoice) atau tahun (mode per periode) dan memfilter cabang.
- User memfilter barang pada mode per barang, invoice pada mode per invoice, serta memilih pengelompokan per bulan atau per kuartal pada mode per periode.
- User melihat total penjualan, total harga pokok, nilai keuntungan, dan persentase keuntungan.
- User mengekspor laporan ke Excel jika memiliki hak akses.
b. Catatan
c. Kesimpulan
- [FE] -
- [BE] -
2. Functional Requirement
| Kode | Deskripsi |
|---|---|
| FR-01 | Sistem menampilkan keuntungan per barang (SKU) dalam periode |
| FR-02 | Sistem menampilkan keuntungan per invoice beserta tanggal dan customer |
| FR-03 | Sistem menampilkan keuntungan per bulan atau per kuartal dalam satu tahun |
| FR-04 | User dapat memfilter cabang, barang, dan invoice sesuai mode |
| FR-05 | User dengan izin Excel dapat mengekspor laporan keuntungan ke Excel |
3. Use Case List
| Kode | Deskripsi |
|---|---|
| UC-01 | Melihat keuntungan penjualan per barang |
| UC-02 | Melihat keuntungan penjualan per invoice |
| UC-03 | Melihat keuntungan penjualan per periode |
| UC-04 | Mengekspor laporan keuntungan ke Excel |
4. Use Case Scenario
UC-01 : Melihat keuntungan penjualan per barang
| Aktor | User penjualan / akuntansi |
| Deskripsi | User mengetahui keuntungan setiap barang yang terjual dalam periode |
| Prekondisi | User memiliki izin #lap-keuntungan |
| Alur utama | 1. User membuka Laporan Penjualan lalu Keuntungan Penjualan. 2. User memilih mode per barang, mengisi periode dan cabang. 3. User dapat memfilter barang tertentu. 4. User menekan tombol tampilkan. 5. Sistem menampilkan nama barang, total penjualan, total HPP, keuntungan, dan persentase keuntungan. |
| Alur negatif | - Jika periode kosong, muncul alert "Periode Tidak Boleh Kosong". - Jika mode keuntungan belum dipilih, panel filter tambahan tidak tampil. - Jika data kosong atau gagal dimuat, muncul notifikasi "Data yang anda filter tidak ditemukan silahkan ganti filter". |
| Bisnis rule | - Keuntungan = total penjualan dikurangi total harga pokok. - Persentase keuntungan = keuntungan dibagi total HPP x 100, dan bernilai 100% jika HPP nol. - Data dikelompokkan per SKU. - Mode penjualan (kasir atau grosir) tidak dipakai pada laporan ini. |
| Postkondisi | Keuntungan per barang tampil |
| Trigger | User menekan tombol tampilkan |
| Kode FR | FR-01 FR-04 |
UC-02 : Melihat keuntungan penjualan per invoice
| Aktor | User penjualan / akuntansi |
| Deskripsi | User mengetahui keuntungan setiap invoice penjualan |
| Prekondisi | User memiliki izin #lap-keuntungan |
| Alur utama | 1. User memilih mode per invoice, mengisi periode dan cabang. 2. User dapat memfilter nomor invoice tertentu. 3. User menekan tombol tampilkan. 4. Sistem menampilkan tanggal, nomor invoice, customer, total penjualan, total HPP, keuntungan, dan persentase. |
| Alur negatif | - Jika periode kosong, muncul alert "Periode Tidak Boleh Kosong". - Jika data kosong, muncul notifikasi data tidak ditemukan. |
| Bisnis rule | - Data dikelompokkan per invoice penjualan, nomor invoice, dan tanggal. - Rumus keuntungan dan persentase sama dengan mode per barang. |
| Postkondisi | Keuntungan per invoice tampil |
| Trigger | User menekan tombol tampilkan |
| Kode FR | FR-02 FR-04 |
UC-03 : Melihat keuntungan penjualan per periode
| Aktor | User penjualan / akuntansi |
| Deskripsi | User melihat tren keuntungan per bulan atau per kuartal dalam satu tahun |
| Prekondisi | User memiliki izin #lap-keuntungan |
| Alur utama | 1. User memilih mode per periode lalu memilih tahun dan cabang. 2. User memilih pengelompokan per bulan atau per kuartal. 3. User menekan tombol tampilkan. 4. Sistem menampilkan periode, total penjualan, total HPP, keuntungan, dan persentase. |
| Alur negatif | - Jika pengelompokan periode kosong, form tidak valid dan laporan tidak dimuat. - Jika data kosong, muncul notifikasi data tidak ditemukan. |
| Bisnis rule | - Rentang data satu tahun penuh sesuai tahun terpilih. - Server selalu mengembalikan data bulanan, pengelompokan kuartal dilakukan dengan menjumlahkan tiga bulan. |
| Postkondisi | Keuntungan per periode tampil |
| Trigger | User menekan tombol tampilkan |
| Kode FR | FR-03 FR-04 |
UC-04 : Mengekspor laporan keuntungan ke Excel
| Aktor | User dengan izin Excel laporan keuntungan |
| Deskripsi | User mengunduh laporan keuntungan sesuai mode yang tampil |
| Prekondisi | Laporan sudah tampil |
| Alur utama | 1. User menekan tombol export Excel. 2. Sistem menyusun workbook sesuai mode. 3. Browser mengunduh "Laporan Penjualan Keuntungan.xlsx" untuk mode per barang atau per invoice, atau "Laporan Penjualan Keuntungan per Periode.xlsx" untuk mode per periode. |
| Alur negatif | - Jika filter belum diterapkan, muncul notifikasi "Periode Tidak Boleh Kosong". - Jika data kosong, muncul alert "Data Laporan Tidak Ditemukan". |
| Bisnis rule | - Tombol tampil bila user memiliki izin excel pada #lap-keuntungan.- Ekspor dibuat di browser dari data yang tampil. |
| Postkondisi | File Excel terunduh |
| Trigger | User menekan tombol export Excel |
| Kode FR | FR-05 |
5. Data Flow Diagram
DFD-01 — Alur data keuntungan penjualan
6. Sequence Diagram
SD-01 — UC-01 : Melihat keuntungan penjualan per barang
SD-02 — UC-02 : Melihat keuntungan penjualan per invoice
SD-03 — UC-03 : Melihat keuntungan penjualan per periode
SD-04 — UC-04 : Mengekspor laporan keuntungan ke Excel
7. Table Schema
8. API Schema
| Endpoint | Status | Perubahan |
|---|---|---|
GET /laporan-penjualan/margin | existing | - |
POST /sku/get-bulk-sku | existing | - |
GET /customer | existing | - |